조건부 컴파일과 전처리기

아는거 씨부리기

// myheader.h
#ifndef __MY_HEADER
#define __MY_HEADER
int do_something(void);
#endif
// dep1.h  
#include "myheader.h"  
...
// dep2.h  
#include "myheader.h"  
...  
// main.c  
#include "dep1.h"  
#include "dep2.h"  

int main(void) {  
	do_something();  
}  
#define DECLARE_STRUCT_TYPE(name) typedef struct name##_s name##_t

DECLARE_STRUCT_TYPE(g_object); // 출력 결과는 typedef struct g_object_s g_object_t;
#define PRINT_D(x) printf("%s: %d\n", (#x), (int)(x))
#define PRINT_L(x) printf("%s: %ld\n", (#x), (long)(x))

x = 10
PRINT_D(x); // x: 10